home *** CD-ROM | disk | FTP | other *** search
/ Giga Games 1 / Giga Games.iso / net / d_d / caltech / inbound / gemgnrtr.c < prev    next >
Encoding:
C/C++ Source or Header  |  1993-06-22  |  4.4 KB  |  143 lines

  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <strings.h>
  4.  
  5. /* this little program was originally proposed by matt osickey */
  6. /* azrael@sage.cc.purdue.edu or osickey@centrifuge.ecn.purdue.edu */
  7.  
  8. /* if anyone can supply me with a better way to generate */
  9. /* random percentiles in 'c' please email me             */
  10.  
  11. int percentile()
  12. {
  13.      double random1, random2, random3;
  14.      int percent;
  15.      random1=(double)(rand());
  16.      random2=(double)(rand());
  17.      random3=(double)(random1/random2); 
  18.      if (random3<=1.00)
  19.         return((int)(random3*100));
  20.      while (random3>1.00)
  21.      {
  22.         random3-=1;;
  23.      }
  24.      percent=(int)(random3*100.00);
  25.      return(percent);
  26. }
  27. void main()
  28. {
  29.  
  30.    int percentile(), initialize, i, j, dummy, quantity, value;
  31. static char ornamental[11][20]={"Azurite   ","Agate     ","Blue Quartz",
  32.            "Hematite  ", "Lapis Lazuli","Malachite  ","Obsidian   ",
  33.         "Agate     ", "Rhodochrosite","Turquoise    ","Banded Agate"};
  34. static char semiprecious[10][20]={"Bloodstone","Citrine   ","Jasper    ",
  35.         "Moonstone  ", "Onyx      ","Sardonyx  ","StarRose Quartz",
  36.         "Zircon    ", "Carnelian  ","Chalcedony"};
  37. static char fancy[10][20]={"Amber    ","Alexandrite","Amethyst  ","Chysoberyl",
  38.         "Coral\t", "Garnet\t","Jade\t","Jet      ","Spinel   ",
  39.         "Tourmaline"};
  40. static char precious[10][20]={"Aquamarine","Violet Garnet","Jade     ",
  41.         "White Pearl", "Black Pearl","Peridot  ","Blue Spinel","Topaz    ",
  42.         "Rose Pearl", "Spinel   "};
  43. static char gems[10][20]={"Black Opal","Fire Opal","Opal     ",
  44.         "O. Amethyst", "O. Topaz  ","Sapphire   ","Sapphire    ",
  45.         "Tiny Diamond","Tiny Ruby","Tiny Emerald"};
  46. static char jewels[10][20]={"Black Saphire","Diamond   ","Emerald   ",
  47.         "Jacinth  ", "O. Emerald","Ruby    ","Star Ruby","Star Sapphire",
  48.         "Lg. Sapphire","Blue Diamond"};
  49.  
  50.    FILE *ifp, *fopen(), *fclose();
  51.    ifp = fopen("gems","w");
  52.    printf("Please enter a random integer:  \n");
  53.    scanf(" %d",&initialize);
  54.    for (i=0;i<initialize;i++)
  55.        dummy=rand();
  56.    printf("Please enter the number of gems you wish to generate:  \n");
  57.    scanf(" %d",&quantity);
  58.    ifp = fopen("gems","a");
  59.    for (i=0;i<quantity/3;i++)
  60.    {
  61.        dummy=percentile();
  62.        if (dummy<20)
  63.        {
  64.           for (j=0;j<3;j++)
  65.           {
  66.           dummy=percentile()/10;
  67.           value=(int)(10+((double)percentile())/10.0);
  68.           if (j==0)
  69.           fprintf(ifp,"%d gp %s\t",value,ornamental[dummy]);
  70.           else 
  71.           fprintf(ifp,"  %d gp %s\t", value,ornamental[dummy]);
  72.           }
  73.           fprintf(ifp,"\n");
  74.        }
  75.        if ((dummy<40)&&(dummy>=20))
  76.        {
  77.           for (j=0;j<3;j++)
  78.           {
  79.           dummy=percentile()/10;
  80.           value=(int)(50+((double)percentile())/2.0);
  81.           if (j==0)
  82.           fprintf(ifp,"%d gp %s\t",value,semiprecious[dummy-1]);
  83.           else
  84.           fprintf(ifp,"  %d gp %s\t", value,semiprecious[dummy-1]);
  85.           }
  86.           fprintf(ifp,"\n");
  87.        }
  88.        if ((dummy<60)&&(dummy>=40))
  89.        {
  90.           for (j=0;j<3;j++)
  91.           {
  92.           dummy=percentile()/10;
  93.           value=(int)(100+percentile());
  94.           if (j==0)
  95.           fprintf(ifp,"%d gp %s\t",value,fancy[dummy-1]);
  96.           else
  97.           fprintf(ifp,"  %d gp %s\t", value,fancy[dummy-1]);
  98.           }
  99.           fprintf(ifp,"\n");
  100.        }
  101.        if ((dummy<80)&&(dummy>=60))
  102.        {
  103.           for (j=0;j<3;j++)
  104.           {
  105.           dummy=percentile()/10;
  106.           value=(int)(500+percentile()*5);
  107.           if (j==0)
  108.           fprintf(ifp,"%d gp %s\t",value,precious[dummy-1]);
  109.           else
  110.           fprintf(ifp,"  %d gp %s\t", value,precious[dummy-1]);
  111.           }
  112.           fprintf(ifp,"\n");
  113.        }
  114.        if ((dummy<95)&&(dummy>=80))
  115.        {
  116.           for (j=0;j<3;j++)
  117.           {
  118.           dummy=percentile()/10;
  119.           value=(int)(1000+percentile()*10);
  120.           if (j==0)
  121.           fprintf(ifp,"%d gp %s\t",value,gems[dummy-1]);
  122.           else
  123.           fprintf(ifp,"  %d gp %s\t", value,gems[dummy-1]);
  124.           }
  125.           fprintf(ifp,"\n");
  126.        }
  127.        if ((dummy<100)&&(dummy>=95))
  128.        {
  129.           for (j=0;j<3;j++)
  130.           {
  131.           dummy=percentile()/10;
  132.           value=(int)(5000+percentile()*50);
  133.           if(j==0)
  134.           fprintf(ifp,"%d gp %s\t",value,jewels[dummy-1]);
  135.           else
  136.           fprintf(ifp,"  %d gp %s\t", value,jewels[dummy-1]);
  137.           }
  138.           fprintf(ifp,"\n");
  139.        }
  140.      }
  141.      fclose(ifp);
  142. }
  143.